.. _ecmMxMot_VMoveStart: ecmMxMot_VMoveStart ======================== .. Hint:: :ref:`ECAT_Appendix_00` 사용 가능 SYNOPSIS -------- .. code-block:: none t_cmdidx ecmMxMot_VMoveStart(_FF)( t_i32 NetID, t_i32 NumAxes, t_i32 AxisList[], t_i32 DirList[], t_i32 *ErrCode ) DESCRIPTION ----------- - 여러 개의 축에 대하여 Velocity Move작업을 동시에 시작합니다. - Velocity Move는 작업속도까지 가속한 후에 작업속도를 유지하며 정지 함수가 호출될 때까지지정한 방향으로의 모션을 계속 수행합니다. PARAMETER --------- - NetID : Network 번호 - NumAxes : 동시에 작업을 수행할 대상 축 개수 - AxisList : 동시에 작업을 수행할 대상 축 배열 주소값. 이 배열의 크기는 NumAxes값과 일치하거나 커야 합니다. - :ref:`DirList ` : 방향을 지시하는 값의 배열 주소값. 이 배열의 크기는 NumAxes값과 일치하거나 커야 합니다. 모션의 방향을 지시하는 값은 다음과 같습니다. - ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다. RETURN VALUE ------------ - 이 리턴값은 함수의 cmdidx가 반환됩니다. EXAMPLE ````````````` .. code-block:: cpp :linenos: // 다음의 예제는2축을 "Jog 이동"을 하는 예입니다. 본 예제에서의 "Jog 이동"은 버튼이 눌려진 상태에서는 Axis0,1축의 이동을 행하다가, 버튼이 풀리면 이동을 멈추는 예입니다. #include "ComiEcatSdk_Api.h" #define AXIS0 0 #define AXIS1 1 t_32 Error_Num = 0;//함수 별 에러 코드 저장 변수 /*************************************************************** * MulitProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이 * 적용되는 부분을 의미합니다. //5~9장 사이 내용 참고 ***************************************************************/ void MulitProgramInitial() { TEcDevInfo Device_Info; //디바이스 정보 저장 할 구조체 t_i32 Device_Num = 0; t_success nIsLoaded = ecDll_Load (); if(!ecGn_LoadDevices(&Error_Num)){ //장치 로드 //로드 실패시 예외 처리 } if(!ecGn_GetDevInfo(Device_Num,&Device_Info, &Error_Num)){ //디바이스 정보 로드 실패 시 예외 처리 } ecNet_SetAlState(Device_Info.NetIdx, ecAL_STATE_OP, &Error_Num); //ALState OP모드로 전환 ecmSxCtl_SetSvon(Device_Info.NetIdx, AXIS0, &Error_Num); ecmSxCtl_SetSvon(Device_Info.NetIdx, AXIS1, &Error_Num); } //MulitProgramInitial 함수 끝 /******************************************************************** * MulitMoveSetting : //이 함수는 다축 이동을 위한 준비 단계 함수 * ecmSxCfg_SetMioProp, ecmSxCfg_SetSpeedPatt, ecmSxCfg_SetJerkRatio ecmSxCfg_SetUnitDist, ecmSxCfg_SetUnitSpeed 를 이용하여 세팅 * //많은 세팅 관련 함수가 있지만 경우에 따라 사용자가 선택해서 사용 *********************************************************************/ void MulitMoveSetting () { ecmSxCfg_SetMioProp(Device_Info.NetIdx, AXIS0, propID, propID, &Error_Num) ecmSxCfg_SetUnitDist( Device_Info.NetIdx, AXIS0, UnitDist , &Error_Num); ecmSxCfg_SetUnitSpeed([Device_Info.NetIdx, AXIS0, UnitSpeed, &Error_Num); ecmSxCfg_SetSpeedPatt(Device_Info.NetIdx, AXIS0, 0, 0, 40000, 10000, 10000, &Error_Num ); ecmSxCfg_SetJerkRatio (Device_Info.NetIdx, AXIS0, JerkTimeRatio, &Error_Num); ecmSxCfg_SetMioProp(Device_Info.NetIdx, AXIS1, propID, propID, &Error_Num) ecmSxCfg_SetUnitDist( Device_Info.NetIdx, AXIS1, UnitDist , &Error_Num); ecmSxCfg_SetUnitSpeed([Device_Info.NetIdx, AXIS1, UnitSpeed, &Error_Num); ecmSxCfg_SetSpeedPatt(Device_Info.NetIdx, AXIS1, 0, 0, 40000, 10000, 10000, &Error_Num ); ecmSxCfg_SetJerkRatio (Device_Info.NetIdx, AXIS1, JerkTimeRatio, &Error_Num); } /************************************************************** * MulitPlusButtonDown() : (+)Move 버튼이 눌렸을 때 호출되는 가상의 함수 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다. **************************************************************/ void MulitPlusButtonDown () { t_i32 AxisList[2] = {0,1}; t_i32 DirList[2] = { ecmDIR_P, ecmDIR_P} ecmMxMot_VMoveStart(Device_Info.NetIdx, 2, AxisList DirList, &Error_Num) //Positive dir V-MOVE } /************************************************************** * MulitPlusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수 * 이 함수에서는 V-Move 를 종료합니다. **************************************************************/ void MulitPlusButtonUp () { t_i32 AxisList[2] = {0,1}; ecmMxMot_Stop(Device_Info.NetIdx, 2, AxisList , 0, 0, &Error_Num); // 두 축 정지 } /************************************************************** * MulitMinusButtonDown(): (-)Move 버튼이 눌렸을 때 호출되는 가상의 함수 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다. **************************************************************/ void MulitMinusButtonDown() { t_i32 AxisList[2] = {0,1}; t_i32 DirList[2] = { ecmDIR_N, ecmDIR_N} ecmMxMot_VMoveStart(Device_Info.NetIdx, 2, AxisList DirList, &Error_Num) //Negative dir V-MOVE } /************************************************************** * MulitMinusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수 * //이 함수에서는 V-Move 를 종료합니다. **************************************************************/ void MulitMinusButtonUp() { ecmMxMot_Stop(Device_Info.NetIdx, 2, AxisList , 0, 0, &Error_Num); // 두 축 정지 }